Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Displaying Raw • Download


meshchatx/src/frontend/components/tools/RNodeFlasherPage.vue fda9187e95d8b9cc8373c1de23cefce6928c241d (fda9187e) Text, 53.77 KB

Tb4b4b4<Tff7b72templateTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-col h-full w-full bg-white dark:bg-zinc-950 overflow-hidden"Tb4b4b4>
T8b949e<!-- header -->
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"flex items-center px-4 py-2 border-b border-gray-200 dark:border-zinc-800 bg-white/60 dark:bg-zinc-900/50 backdrop-blur-lg z-10 relative"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center space-x-2"Tb4b4b4>
Tb4b4b4<Tff7b72v-icon Te6edf3iconTff7b72=Ta5d6ff"mdi-chip" Te6edf3colorTff7b72=Ta5d6ff"purple" Te6edf3sizeTff7b72=Ta5d6ff"24"Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72v-iconTb4b4b4>
Tb4b4b4<Tff7b72h1 Te6edf3classTff7b72=Ta5d6ff"text-xl font-black text-gray-900 dark:text-white"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.title"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72h1Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"ml-auto flex items-center space-x-2"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"p-2 text-gray-500 hover:bg-gray-100 dark:hover:bg-zinc-800 rounded-lg transition-colors flex items-center gap-2 text-sm font-medium"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3showAdvanced Tff7b72= Tff7b72!Te6edf3showAdvancedTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Tb4b4b4:Te6edf3icon-nameTff7b72=Ta5d6ff"Te6edf3showAdvanced Tff7b72? Ta5d6ff'cog' Tff7b72: Ta5d6ff'cog-outline'Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"hidden sm:inline"Tb4b4b4>Tff7b72{{ Te6edf3showAdvanced Tff7b72? Ta5d6ff"Simple" Tff7b72: Ta5d6ff"Advanced" Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72a
Te6edf3hrefTff7b72=Ta5d6ff"/rnode-flasher/index.html"
Te6edf3targetTff7b72=Ta5d6ff"_blank"
Te6edf3classTff7b72=Ta5d6ff"p-2 text-gray-500 hover:bg-gray-100 dark:hover:bg-zinc-800 rounded-lg transition-colors flex items-center gap-2 text-sm font-medium"
Te6edf3titleTff7b72=Ta5d6ff"Open original flasher in new tab"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"open-in-new" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"hidden sm:inline"Tb4b4b4>OriginalTb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72aTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"p-2 text-gray-500 hover:bg-gray-100 dark:hover:bg-zinc-800 rounded-lg transition-colors"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3$routerTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{ Te6edf3nameTff7b72: Ta5d6ff'tools' Tb4b4b4}Tb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"close" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- content -->
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex-1 min-h-0 overflow-y-auto p-4 sm:p-6 space-y-6"Tb4b4b4>
T8b949e<!-- setup card: Select device & Firmware -->
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"border border-gray-200 dark:border-zinc-800 bg-white dark:bg-zinc-900 rounded-2xl shadow-xl overflow-hidden"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-1 md:grid-cols-2"Tb4b4b4>
T8b949e<!-- Left: Device Selection -->
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-6 border-b md:border-b-0 md:border-r border-gray-100 dark:border-zinc-800 space-y-4"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-2 mb-2"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"p-2 bg-blue-100 dark:bg-blue-900/30 rounded-lg text-blue-600 dark:text-blue-400"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"usb-port" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72h2 Te6edf3classTff7b72=Ta5d6ff"font-bold text-gray-900 dark:text-zinc-100"Tb4b4b4>
1. Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.select_device"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72h2Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"space-y-3"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"space-y-1"Tb4b4b4>
Tb4b4b4<Tff7b72label
Te6edf3classTff7b72=Ta5d6ff"text-xs font-semibold text-gray-500 dark:text-zinc-500 uppercase tracking-wider"
Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.product"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72label
Tb4b4b4>
Tb4b4b4<Tff7b72select
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3selectedProductTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"w-full bg-gray-50 dark:bg-zinc-800/50 border border-gray-200 dark:border-zinc-800 text-gray-900 dark:text-zinc-100 text-sm rounded-xl focus:ring-2 focus:ring-blue-500/50 focus:border-blue-500 px-4 py-2.5 transition-all"
Tb4b4b4>
Tb4b4b4<Tff7b72option Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"Tff7b72nullTa5d6ff" Te6edf3disabledTb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.select_product"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3product Tff7b72of Te6edf3productsTa5d6ff" Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3productTb4b4b4.Te6edf3idTa5d6ff" Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"Te6edf3productTa5d6ff"Tb4b4b4>
Tff7b72{{ Te6edf3productTb4b4b4.Te6edf3name Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72selectTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"space-y-1"Tb4b4b4>
Tb4b4b4<Tff7b72label
Te6edf3classTff7b72=Ta5d6ff"text-xs font-semibold text-gray-500 dark:text-zinc-500 uppercase tracking-wider"
Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.model"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72label
Tb4b4b4>
Tb4b4b4<Tff7b72select
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3selectedModelTa5d6ff"
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Tff7b72!Te6edf3selectedProductTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"w-full bg-gray-50 dark:bg-zinc-800/50 border border-gray-200 dark:border-zinc-800 text-gray-900 dark:text-zinc-100 text-sm rounded-xl focus:ring-2 focus:ring-blue-500/50 focus:border-blue-500 px-4 py-2.5 transition-all disabled:opacity-50"
Tb4b4b4>
Tb4b4b4<Tff7b72option Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"Tff7b72nullTa5d6ff" Te6edf3disabledTb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.select_model"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72template Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3selectedProductTa5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3model Tff7b72of Te6edf3selectedProductTb4b4b4.Te6edf3modelsTa5d6ff" Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3modelTb4b4b4.Te6edf3idTa5d6ff" Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"Te6edf3modelTa5d6ff"Tb4b4b4>
Tff7b72{{ Te6edf3modelTb4b4b4.Te6edf3name Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72selectTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72button
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3selectedProductTff7b72?Tb4b4b4.Te6edf3platform Tff7b72=== T79c0ff0x70Ta5d6ff"
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Te6edf3isEnteringDfuModeTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"w-full inline-flex items-center justify-center gap-2 rounded-xl bg-amber-100 dark:bg-amber-900/30 hover:bg-amber-200 dark:hover:bg-amber-900/40 px-4 py-2.5 text-sm font-bold text-amber-700 dark:text-amber-400 transition-colors disabled:opacity-50"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3enterDfuModeTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72v-progress-circular Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isEnteringDfuModeTa5d6ff" Te6edf3indeterminate Te6edf3sizeTff7b72=Ta5d6ff"16" Te6edf3widthTff7b72=Ta5d6ff"2" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>Tff7b72{{
Te6edf3isEnteringDfuMode
Tff7b72? Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.entering_dfu_mode"Tb4b4b4)
Tff7b72: Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.enter_dfu_mode"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- Right: Firmware Selection -->
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-6 space-y-4 bg-gray-50/50 dark:bg-zinc-900/50"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-2 mb-2"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"p-2 bg-purple-100 dark:bg-purple-900/30 rounded-lg text-purple-600 dark:text-purple-400"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"file-download" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72h2 Te6edf3classTff7b72=Ta5d6ff"font-bold text-gray-900 dark:text-zinc-100"Tb4b4b4>
2. Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.select_firmware"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72h2Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"space-y-4"Tb4b4b4>
T8b949e<!-- Auto-download section -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3selectedProduct Tff7b72&& Te6edf3selectedModel Tff7b72&& Te6edf3recommendedFirmwareFilenameTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"p-4 rounded-xl border border-blue-100 dark:border-blue-900/30 bg-blue-50/50 dark:bg-blue-900/10 space-y-3"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-xs font-bold text-blue-700 dark:text-blue-400 uppercase"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.download_recommended"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-sm text-gray-600 dark:text-zinc-400 break-all font-mono"Tb4b4b4>
Tff7b72{{ Te6edf3recommendedFirmwareFilename Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72button
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Te6edf3isDownloadingFirmware Tff7b72|| Tff7b72!Te6edf3latestReleaseTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"w-full inline-flex items-center justify-center gap-2 rounded-xl bg-blue-600 hover:bg-blue-700 px-4 py-2.5 text-sm font-bold text-white transition-colors disabled:opacity-50"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3downloadRecommendedFirmwareTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72v-progress-circular
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isDownloadingFirmwareTa5d6ff"
Te6edf3indeterminate
Te6edf3sizeTff7b72=Ta5d6ff"16"
Te6edf3widthTff7b72=Ta5d6ff"2"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3v-else Te6edf3icon-nameTff7b72=Ta5d6ff"cloud-download" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>Tff7b72{{
Te6edf3isDownloadingFirmware
Tff7b72? Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.downloading"Tb4b4b4)
Tff7b72: Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.download_recommended"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- Manual file pick -->
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"space-y-1"Tb4b4b4>
Tb4b4b4<Tff7b72label
Te6edf3classTff7b72=Ta5d6ff"text-xs font-semibold text-gray-500 dark:text-zinc-500 uppercase tracking-wider"
Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.select_firmware"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72label
Tb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3refTff7b72=Ta5d6ff"file"
Te6edf3typeTff7b72=Ta5d6ff"file"
Te6edf3acceptTff7b72=Ta5d6ff".zip"
Te6edf3classTff7b72=Ta5d6ff"block w-full text-sm text-gray-900 dark:text-zinc-100 border border-gray-200 dark:border-zinc-800 rounded-xl cursor-pointer bg-white dark:bg-zinc-900 focus:outline-none file:mr-4 file:py-2.5 file:px-4 file:border-0 file:text-sm file:font-bold file:bg-zinc-200 dark:file:bg-zinc-700 file:text-zinc-700 dark:file:text-zinc-200 hover:file:bg-zinc-300 dark:hover:file:bg-zinc-600"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3flashErrorTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"p-3 rounded-xl bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-800 text-xs text-red-600 dark:text-red-400"
Tb4b4b4>
Tff7b72{{ Te6edf3flashError Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72button
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Tff7b72!Te6edf3selectedProduct Tff7b72|| Tff7b72!Te6edf3selectedModel Tff7b72|| Te6edf3isFlashingTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"w-full inline-flex items-center justify-center gap-2 rounded-xl bg-green-600 hover:bg-green-700 px-4 py-3 text-sm font-bold text-white shadow-lg shadow-green-600/20 transition-all active:scale-[0.98] disabled:opacity-50"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3flashTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3v-ifTff7b72=Ta5d6ff"Tff7b72!Te6edf3isFlashingTa5d6ff" Te6edf3icon-nameTff7b72=Ta5d6ff"flash" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72v-progress-circular Te6edf3v-else Te6edf3indeterminate Te6edf3sizeTff7b72=Ta5d6ff"16" Te6edf3widthTff7b72=Ta5d6ff"2" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>Tff7b72{{
Te6edf3isFlashing
Tff7b72? Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.flashing"Tb4b4b4, Tb4b4b4{ Te6edf3percentageTff7b72: Te6edf3flashingProgress Tb4b4b4}Tb4b4b4)
Tff7b72: Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.flash_now"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>

Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isFlashingTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"space-y-1.5 pt-2"Tb4b4b4>
Tb4b4b4<Tff7b72v-progress-linear Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3flashingProgressTa5d6ff" Te6edf3colorTff7b72=Ta5d6ff"green" Te6edf3heightTff7b72=Ta5d6ff"8" Te6edf3rounded Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-[10px] text-center text-gray-500 font-mono"Tb4b4b4>Tff7b72{{ Te6edf3flashingStatus Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- actions & tools card -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3showAdvanced Tff7b72|| Te6edf3isProvisioning Tff7b72|| Te6edf3isSettingFirmwareHashTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"border border-gray-200 dark:border-zinc-800 bg-white dark:bg-zinc-900 rounded-2xl shadow-xl p-6 space-y-6"
Tb4b4b4>
T8b949e<!-- Provision & Finalize -->
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-1 md:grid-cols-2 gap-6"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"space-y-3"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72h3 Te6edf3classTff7b72=Ta5d6ff"font-bold text-gray-900 dark:text-zinc-100"Tb4b4b4>
3. Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.step_provision"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72h3Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"key-variant" Te6edf3classTff7b72=Ta5d6ff"size-4 text-zinc-400" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-500 dark:text-zinc-500"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.provision_description"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-ifTff7b72=Ta5d6ff"Tff7b72!Te6edf3isProvisioningTa5d6ff"
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Tff7b72!Te6edf3selectedProduct Tff7b72|| Tff7b72!Te6edf3selectedModelTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"w-full inline-flex items-center justify-center gap-2 rounded-xl bg-blue-100 dark:bg-blue-900/30 hover:bg-blue-200 dark:hover:bg-blue-900/40 px-4 py-2.5 text-sm font-bold text-blue-700 dark:text-blue-400 transition-colors disabled:opacity-50"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3provisionTa5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.provision"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-else Te6edf3classTff7b72=Ta5d6ff"flex items-center justify-center gap-2 text-sm text-blue-600 p-2"Tb4b4b4>
Tb4b4b4<Tff7b72v-progress-circular Te6edf3indeterminate Te6edf3sizeTff7b72=Ta5d6ff"18" Te6edf3widthTff7b72=Ta5d6ff"2" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"font-bold"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.provisioning_wait"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"space-y-3"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72h3 Te6edf3classTff7b72=Ta5d6ff"font-bold text-gray-900 dark:text-zinc-100"Tb4b4b4>
4. Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.step_set_hash"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72h3Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"shield-check" Te6edf3classTff7b72=Ta5d6ff"size-4 text-zinc-400" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-500 dark:text-zinc-500"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.set_hash_description"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-ifTff7b72=Ta5d6ff"Tff7b72!Te6edf3isSettingFirmwareHashTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"w-full inline-flex items-center justify-center gap-2 rounded-xl bg-blue-100 dark:bg-blue-900/30 hover:bg-blue-200 dark:hover:bg-blue-900/40 px-4 py-2.5 text-sm font-bold text-blue-700 dark:text-blue-400 transition-colors"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3setFirmwareHashTa5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.set_firmware_hash"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-else Te6edf3classTff7b72=Ta5d6ff"flex items-center justify-center gap-2 text-sm text-blue-600 p-2"Tb4b4b4>
Tb4b4b4<Tff7b72v-progress-circular Te6edf3indeterminate Te6edf3sizeTff7b72=Ta5d6ff"18" Te6edf3widthTff7b72=Ta5d6ff"2" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"font-bold"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.setting_hash_wait"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- Advanced Actions Grid -->
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3showAdvancedTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"pt-6 border-t border-gray-100 dark:border-zinc-800"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-xs font-bold text-gray-400 dark:text-zinc-600 uppercase mb-4 tracking-widest"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.advanced_tools"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-2 sm:grid-cols-4 lg:grid-cols-5 gap-3"Tb4b4b4>
Tb4b4b4<Tff7b72button Te6edf3classTff7b72=Ta5d6ff"action-btn" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3detectTa5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"magnify" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.detect_rnode"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button Te6edf3classTff7b72=Ta5d6ff"action-btn" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3rebootTa5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"restart" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.reboot_rnode"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button Te6edf3classTff7b72=Ta5d6ff"action-btn" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3readDisplayTa5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"monitor" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.read_display"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button Te6edf3classTff7b72=Ta5d6ff"action-btn" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3dumpEepromTa5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"database-export" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.dump_eeprom"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button Te6edf3classTff7b72=Ta5d6ff"action-btn danger" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3wipeEepromTa5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"eraser" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.wipe_eeprom"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3rnodeDisplayImageTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"mt-4 p-4 rounded-2xl bg-zinc-950 flex justify-center border border-zinc-800"
Tb4b4b4>
Tb4b4b4<Tff7b72img Tb4b4b4:Te6edf3srcTff7b72=Ta5d6ff"Te6edf3rnodeDisplayImageTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"h-28 pixelated" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- config cards -->
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3showAdvancedTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-1 lg:grid-cols-2 gap-6"Tb4b4b4>
T8b949e<!-- Bluetooth -->
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"border border-gray-200 dark:border-zinc-800 bg-white dark:bg-zinc-900 rounded-2xl shadow-xl overflow-hidden"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"px-6 py-4 border-b border-gray-100 dark:border-zinc-800 flex items-center gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"bluetooth" Te6edf3classTff7b72=Ta5d6ff"size-5 text-blue-500" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72h3 Te6edf3classTff7b72=Ta5d6ff"font-bold text-gray-900 dark:text-zinc-100"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.configure_bluetooth"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72h3Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-6 space-y-4"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-wrap gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72button Te6edf3classTff7b72=Ta5d6ff"action-btn flex-1" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3enableBluetoothTa5d6ff"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.enable"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button Te6edf3classTff7b72=Ta5d6ff"action-btn flex-1" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3disableBluetoothTa5d6ff"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.disable"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"action-btn flex-[2] bg-blue-500 !text-white !border-none"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3startBluetoothPairingTa5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.start_pairing"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"text-[10px] text-gray-400 dark:text-zinc-500 leading-relaxed uppercase tracking-wider"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.bluetooth_restart_warning"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- TNC -->
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"border border-gray-200 dark:border-zinc-800 bg-white dark:bg-zinc-900 rounded-2xl shadow-xl overflow-hidden"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"px-6 py-4 border-b border-gray-100 dark:border-zinc-800 flex items-center gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"radio-tower" Te6edf3classTff7b72=Ta5d6ff"size-5 text-green-500" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72h3 Te6edf3classTff7b72=Ta5d6ff"font-bold text-gray-900 dark:text-zinc-100"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.configure_tnc"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72h3Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-6 space-y-4"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-2 gap-3"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"space-y-1"Tb4b4b4>
Tb4b4b4<Tff7b72label Te6edf3classTff7b72=Ta5d6ff"text-[10px] font-bold text-zinc-400 uppercase tracking-widest"Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.frequency"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72labelTb4b4b4>
Tb4b4b4<Tff7b72input Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3configFrequencyTa5d6ff" Te6edf3typeTff7b72=Ta5d6ff"number" Te6edf3classTff7b72=Ta5d6ff"config-input" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"space-y-1"Tb4b4b4>
Tb4b4b4<Tff7b72label Te6edf3classTff7b72=Ta5d6ff"text-[10px] font-bold text-zinc-400 uppercase tracking-widest"Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.tx_power"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72labelTb4b4b4>
Tb4b4b4<Tff7b72input Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3configTxPowerTa5d6ff" Te6edf3typeTff7b72=Ta5d6ff"number" Te6edf3classTff7b72=Ta5d6ff"config-input" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"space-y-1"Tb4b4b4>
Tb4b4b4<Tff7b72label Te6edf3classTff7b72=Ta5d6ff"text-[10px] font-bold text-zinc-400 uppercase tracking-widest"Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.bandwidth"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72labelTb4b4b4>
Tb4b4b4<Tff7b72select Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3configBandwidthTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"config-input"Tb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3bw Tff7b72in Te6edf3RNodeInterfaceDefaultsTb4b4b4.Te6edf3bandwidthsTa5d6ff" Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3bwTa5d6ff" Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"Te6edf3bwTa5d6ff"Tb4b4b4>
Tff7b72{{ Te6edf3bw Tff7b72/ T79c0ff1000 Tff7b72}} KHz
Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72selectTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"space-y-1"Tb4b4b4>
Tb4b4b4<Tff7b72label Te6edf3classTff7b72=Ta5d6ff"text-[10px] font-bold text-zinc-400 uppercase tracking-widest"Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.spreading_factor"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72labelTb4b4b4>
Tb4b4b4<Tff7b72select Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3configSpreadingFactorTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"config-input"Tb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3sf Tff7b72in Te6edf3RNodeInterfaceDefaultsTb4b4b4.Te6edf3spreadingfactorsTa5d6ff" Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3sfTa5d6ff" Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"Te6edf3sfTa5d6ff"Tb4b4b4>
Tff7b72{{ Te6edf3sf Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72selectTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"action-btn flex-1 bg-green-600 !text-white !border-none"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3enableTncModeTa5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.enable"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button Te6edf3classTff7b72=Ta5d6ff"action-btn flex-1" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3disableTncModeTa5d6ff"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.disable"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- help footer -->
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"flex flex-col sm:flex-row items-center justify-between gap-4 p-4 border border-zinc-200 dark:border-zinc-800 rounded-2xl bg-zinc-50 dark:bg-zinc-900/30"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-3 text-sm text-zinc-500"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"help-circle-outline" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.find_device_issue"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-4"Tb4b4b4>
Tb4b4b4<Tff7b72a
Te6edf3targetTff7b72=Ta5d6ff"_blank"
Tb4b4b4:Te6edf3hrefTff7b72=Ta5d6ff"Ta5d6ff`Tffd700${Te6edf3giteaBaseUrlTffd700}Ta5d6ff/Reticulum/rnode-flasherTa5d6ff`Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"text-blue-500 hover:underline text-sm font-bold"
Tb4b4b4>RNode Flasher GHTb4b4b4<Tb4b4b4/Tff7b72a
Tb4b4b4>
Tb4b4b4<Tff7b72a
Te6edf3targetTff7b72=Ta5d6ff"_blank"
Tb4b4b4:Te6edf3hrefTff7b72=Ta5d6ff"Ta5d6ff`Tffd700${Te6edf3giteaBaseUrlTffd700}Ta5d6ff/Reticulum/RNode_FirmwareTa5d6ff`Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"text-blue-500 hover:underline text-sm font-bold"
Tb4b4b4>RNode Firmware GHTb4b4b4<Tb4b4b4/Tff7b72a
Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>

Tb4b4b4<Tff7b72scriptTb4b4b4>
Tff7b72import Te6edf3MaterialDesignIcon Tff7b72from Ta5d6ff"../MaterialDesignIcon.vue"Tb4b4b4;
Tff7b72import Te6edf3RNode Tff7b72from Ta5d6ff"../../js/rnode/RNode.js"Tb4b4b4;
Tff7b72import Te6edf3ROM Tff7b72from Ta5d6ff"../../js/rnode/ROM.js"Tb4b4b4;
Tff7b72import Te6edf3Nrf52DfuFlasher Tff7b72from Ta5d6ff"../../js/rnode/Nrf52DfuFlasher.js"Tb4b4b4;
Tff7b72import Te6edf3RNodeUtils Tff7b72from Ta5d6ff"../../js/rnode/RNodeUtils.js"Tb4b4b4;
Tff7b72import Te6edf3products Tff7b72from Ta5d6ff"../../js/rnode/products.js"Tb4b4b4;
Tff7b72import Te6edf3ToastUtils Tff7b72from Ta5d6ff"../../js/ToastUtils.js"Tb4b4b4;
Tff7b72import Te6edf3GlobalState Tff7b72from Ta5d6ff"../../js/GlobalState"Tb4b4b4;

Tff7b72export Tff7b72default Tb4b4b4{
Te6edf3nameTff7b72: Ta5d6ff"RNodeFlasherPage"Tb4b4b4,
Te6edf3componentsTff7b72: Tb4b4b4{
Te6edf3MaterialDesignIconTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3dataTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4{
Te6edf3rnodeTff7b72: Tff7b72nullTb4b4b4,
Te6edf3isFlashingTff7b72: Tff7b72falseTb4b4b4,
Te6edf3flashingProgressTff7b72: T79c0ff0Tb4b4b4,
Te6edf3flashingStatusTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3flashErrorTff7b72: Tff7b72nullTb4b4b4,
Te6edf3isProvisioningTff7b72: Tff7b72falseTb4b4b4,
Te6edf3isSettingFirmwareHashTff7b72: Tff7b72falseTb4b4b4,
Te6edf3isEnteringDfuModeTff7b72: Tff7b72falseTb4b4b4,
Te6edf3rnodeDisplayImageTff7b72: Tff7b72nullTb4b4b4,
Te6edf3showAdvancedTff7b72: Tff7b72falseTb4b4b4,
Te6edf3selectedProductTff7b72: Tff7b72nullTb4b4b4,
Te6edf3selectedModelTff7b72: Tff7b72nullTb4b4b4,
Te6edf3productsTff7b72: Te6edf3productsTb4b4b4,
Te6edf3configFrequencyTff7b72: T79c0ff917375000Tb4b4b4,
Te6edf3configBandwidthTff7b72: T79c0ff250000Tb4b4b4,
Te6edf3configTxPowerTff7b72: T79c0ff22Tb4b4b4,
Te6edf3configSpreadingFactorTff7b72: T79c0ff11Tb4b4b4,
Te6edf3configCodingRateTff7b72: T79c0ff5Tb4b4b4,
Te6edf3latestReleaseTff7b72: Tff7b72nullTb4b4b4,
Te6edf3isDownloadingFirmwareTff7b72: Tff7b72falseTb4b4b4,
Te6edf3RNodeInterfaceDefaultsTff7b72: Tb4b4b4{
Te6edf3bandwidthsTff7b72: Tb4b4b4[T79c0ff7800Tb4b4b4, T79c0ff10400Tb4b4b4, T79c0ff15600Tb4b4b4, T79c0ff20800Tb4b4b4, T79c0ff31250Tb4b4b4, T79c0ff41700Tb4b4b4, T79c0ff62500Tb4b4b4, T79c0ff125000Tb4b4b4, T79c0ff250000Tb4b4b4, T79c0ff500000Tb4b4b4]Tb4b4b4,
Te6edf3codingratesTff7b72: Tb4b4b4[T79c0ff5Tb4b4b4, T79c0ff6Tb4b4b4, T79c0ff7Tb4b4b4, T79c0ff8Tb4b4b4]Tb4b4b4,
Te6edf3spreadingfactorsTff7b72: Tb4b4b4[T79c0ff7Tb4b4b4, T79c0ff8Tb4b4b4, T79c0ff9Tb4b4b4, T79c0ff10Tb4b4b4, T79c0ff11Tb4b4b4, T79c0ff12Tb4b4b4]Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3computedTff7b72: Tb4b4b4{
Te6edf3recommendedFirmwareFilenameTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3selectedModelTff7b72?Tb4b4b4.Te6edf3firmware_filename Tff7b72?? Tff7b72thisTb4b4b4.Te6edf3selectedProductTff7b72?Tb4b4b4.Te6edf3firmware_filenameTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3giteaBaseUrlTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3GlobalStateTb4b4b4.Te6edf3configTff7b72?Tb4b4b4.Te6edf3gitea_base_url Tff7b72|| Ta5d6ff"https://git.quad4.io"Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3watchTff7b72: Tb4b4b4{
Te6edf3selectedProductTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3selectedModel Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3mountedTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3loadVendorLibrariesTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3fetchLatestReleaseTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3methodsTff7b72: Tb4b4b4{
Tff7b72async Te6edf3fetchLatestReleaseTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Te6edf3fetchTb4b4b4(
Ta5d6ff`Tffd700${Tff7b72thisTb4b4b4.Te6edf3giteaBaseUrlTffd700}Ta5d6ff/api/v1/repos/Reticulum/RNode_Firmware/releases/latestTa5d6ff`
Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3responseTb4b4b4.Te6edf3okTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3latestRelease Tff7b72= Tff7b72await Te6edf3responseTb4b4b4.Te6edf3jsonTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72catch Tb4b4b4{
T8b949e// ignore
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3downloadRecommendedFirmwareTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3recommendedFirmwareFilename Tff7b72|| Tff7b72!Tff7b72thisTb4b4b4.Te6edf3latestReleaseTb4b4b4) Tff7b72returnTb4b4b4;

Tff7b72const Te6edf3asset Tff7b72= Tff7b72thisTb4b4b4.Te6edf3latestReleaseTb4b4b4.Te6edf3assetsTb4b4b4.Te6edf3findTb4b4b4(Tb4b4b4(Te6edf3aTb4b4b4) Tb4b4b4=> Te6edf3aTb4b4b4.Te6edf3name Tff7b72=== Tff7b72thisTb4b4b4.Te6edf3recommendedFirmwareFilenameTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3assetTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.errors.firmware_not_found_in_release"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}

Tff7b72thisTb4b4b4.Te6edf3isDownloadingFirmware Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3downloadUrl Tff7b72= Ta5d6ff`Ta5d6ff/api/v1/tools/rnode/download_firmware?url=Tffd700${Tffa657encodeURIComponentTb4b4b4(Te6edf3assetTb4b4b4.Te6edf3browser_download_urlTb4b4b4)Tffd700}Ta5d6ff`Tb4b4b4;
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Te6edf3fetchTb4b4b4(Te6edf3downloadUrlTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3responseTb4b4b4.Te6edf3okTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3errorData Tff7b72= Tff7b72await Te6edf3responseTb4b4b4.Te6edf3jsonTb4b4b4(Tb4b4b4)Tb4b4b4.Tff7b72catchTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4(Tb4b4b4{ Te6edf3errorTff7b72: Te6edf3responseTb4b4b4.Te6edf3statusText Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72throw Tff7b72new Tf85149ErrorTb4b4b4(Te6edf3errorDataTb4b4b4.Te6edf3error Tff7b72|| Ta5d6ff`Ta5d6ffDownload failed with status Tffd700${Te6edf3responseTb4b4b4.Te6edf3statusTffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3blob Tff7b72= Tff7b72await Te6edf3responseTb4b4b4.Te6edf3blobTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3file Tff7b72= Tff7b72new Te6edf3FileTb4b4b4(Tb4b4b4[Te6edf3blobTb4b4b4]Tb4b4b4, Te6edf3assetTb4b4b4.Te6edf3nameTb4b4b4, Tb4b4b4{ Te6edf3typeTff7b72: Ta5d6ff"application/zip" Tb4b4b4}Tb4b4b4)Tb4b4b4;

T8b949e// Manually set the file to the input ref
Tff7b72const Te6edf3dataTransfer Tff7b72= Tff7b72new Te6edf3DataTransferTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3dataTransferTb4b4b4.Te6edf3itemsTb4b4b4.Te6edf3addTb4b4b4(Te6edf3fileTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4[Ta5d6ff"file"Tb4b4b4]Tb4b4b4.Te6edf3files Tff7b72= Te6edf3dataTransferTb4b4b4.Te6edf3filesTb4b4b4;

Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.alerts.firmware_downloaded"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.errors.failed_download"Tb4b4b4, Tb4b4b4{ Te6edf3errorTff7b72: Te6edf3eTb4b4b4.Te6edf3message Tff7b72|| Te6edf3e Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isDownloadingFirmware Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3loadVendorLibrariesTb4b4b4(Tb4b4b4) Tb4b4b4{
T8b949e// Check if libraries are already loaded
Tff7b72if Tb4b4b4(Tffa657windowTb4b4b4.Te6edf3zip Tff7b72&& Tffa657windowTb4b4b4.Te6edf3CryptoJS Tff7b72&& Tffa657windowTb4b4b4.Te6edf3ESPLoaderTb4b4b4) Tff7b72returnTb4b4b4;

Tff7b72const Te6edf3libs Tff7b72= Tb4b4b4[
Ta5d6ff"/rnode-flasher/js/zip.min.js"Tb4b4b4,
Ta5d6ff"/rnode-flasher/js/crypto-js@3.9.1-1/core.js"Tb4b4b4,
Ta5d6ff"/rnode-flasher/js/crypto-js@3.9.1-1/md5.js"Tb4b4b4,
Tb4b4b4]Tb4b4b4;

Tff7b72for Tb4b4b4(Tff7b72const Te6edf3lib Tff7b72of Te6edf3libsTb4b4b4) Tb4b4b4{
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3loadScriptTb4b4b4(Te6edf3libTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tff7b72try Tb4b4b4{
T8b949e// Load ES Modules
Tff7b72const Te6edf3esptoolPath Tff7b72= Ta5d6ff"/rnode-flasher/js/esptool-js@0.4.5/bundle.js"Tb4b4b4;
Tff7b72const Te6edf3esptool Tff7b72= Tff7b72await Tff7b72importTb4b4b4(T8b949e/* @vite-ignore */ Te6edf3esptoolPathTb4b4b4)Tb4b4b4;
Tffa657windowTb4b4b4.Te6edf3ESPLoader Tff7b72= Te6edf3esptoolTb4b4b4.Te6edf3ESPLoaderTb4b4b4;
Tffa657windowTb4b4b4.Te6edf3Transport Tff7b72= Te6edf3esptoolTb4b4b4.Te6edf3TransportTb4b4b4;

Tff7b72const Te6edf3serialPolyfillPath Tff7b72= Ta5d6ff"/rnode-flasher/js/web-serial-polyfill@1.0.15/dist/serial.js"Tb4b4b4;
Tff7b72const Te6edf3serialPolyfill Tff7b72= Tff7b72await Tff7b72importTb4b4b4(T8b949e/* @vite-ignore */ Te6edf3serialPolyfillPathTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3serialPolyfillTb4b4b4.Te6edf3serialTb4b4b4) Tb4b4b4{
Tffa657windowTb4b4b4.Te6edf3serial Tff7b72= Te6edf3serialPolyfillTb4b4b4.Te6edf3serialTb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to load ES module vendor libraries:"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}

T8b949e// Setup polyfill
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3navigatorTb4b4b4.Te6edf3serial Tff7b72&& Te6edf3navigatorTb4b4b4.Te6edf3usb Tff7b72&& Tffa657windowTb4b4b4.Te6edf3serialTb4b4b4) Tb4b4b4{
Te6edf3navigatorTb4b4b4.Te6edf3serial Tff7b72= Tffa657windowTb4b4b4.Te6edf3serialTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3loadScriptTb4b4b4(Te6edf3srcTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3resolveTb4b4b4, Te6edf3rejectTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3script Tff7b72= Tffa657documentTb4b4b4.Te6edf3createElementTb4b4b4(Ta5d6ff"script"Tb4b4b4)Tb4b4b4;
Te6edf3scriptTb4b4b4.Te6edf3src Tff7b72= Te6edf3srcTb4b4b4;
Te6edf3scriptTb4b4b4.Te6edf3onload Tff7b72= Te6edf3resolveTb4b4b4;
Te6edf3scriptTb4b4b4.Te6edf3onerror Tff7b72= Te6edf3rejectTb4b4b4;
Tffa657documentTb4b4b4.Te6edf3headTb4b4b4.Te6edf3appendChildTb4b4b4(Te6edf3scriptTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3askForSerialPortTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3navigatorTb4b4b4.Te6edf3serialTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3flashError Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.errors.web_serial_not_supported"Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3flashErrorTb4b4b4)Tb4b4b4;
Tff7b72return Tff7b72nullTb4b4b4;
Tb4b4b4}

Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3rnodeTb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3rnodeTb4b4b4.Te6edf3closeTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
T8b949e// ignore
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3rnode Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}

Tff7b72try Tb4b4b4{
Tff7b72return Tff7b72await Te6edf3navigatorTb4b4b4.Te6edf3serialTb4b4b4.Te6edf3requestPortTb4b4b4(Tb4b4b4{ Te6edf3filtersTff7b72: Tb4b4b4[Tb4b4b4] Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3eTb4b4b4.Te6edf3name Tff7b72=== Ta5d6ff"NotFoundError" Tff7b72|| Te6edf3eTb4b4b4.Te6edf3messageTff7b72?Tb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff"No port selected"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3flashError Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.errors.no_device_selected"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3flashError Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.errors.failed_connect"Tb4b4b4, Tb4b4b4{ Te6edf3errorTff7b72: Te6edf3eTb4b4b4.Te6edf3message Tff7b72|| Te6edf3e Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72throw Te6edf3eTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3askForRNodeTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3serialPort Tff7b72= Tff7b72await Tff7b72thisTb4b4b4.Te6edf3askForSerialPortTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3serialPortTb4b4b4) Tff7b72return Tff7b72falseTb4b4b4;

Tff7b72thisTb4b4b4.Te6edf3flashingStatus Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.connecting_device"Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3rnode Tff7b72= Tff7b72await Te6edf3RNodeTb4b4b4.Te6edf3fromSerialPortTb4b4b4(Te6edf3serialPortTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3isRNode Tff7b72= Tff7b72await Tff7b72thisTb4b4b4.Te6edf3rnodeTb4b4b4.Te6edf3detectTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3isRNodeTb4b4b4) Tb4b4b4{
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3rnodeTb4b4b4.Te6edf3closeTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3flashError Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.errors.not_an_rnode"Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3flashErrorTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3flashingStatus Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}

Tff7b72thisTb4b4b4.Te6edf3flashingStatus Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3rnodeTb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3flashingStatus Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72throw Te6edf3eTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3enterDfuModeTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isEnteringDfuMode Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3flashError Tff7b72= Tff7b72nullTb4b4b4;

Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3serialPort Tff7b72= Tff7b72await Tff7b72thisTb4b4b4.Te6edf3askForSerialPortTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3serialPortTb4b4b4) Tff7b72returnTb4b4b4;

Tff7b72const Te6edf3flasher Tff7b72= Tff7b72new Te6edf3Nrf52DfuFlasherTb4b4b4(Te6edf3serialPortTb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3flasherTb4b4b4.Te6edf3enterDfuModeTb4b4b4(Tb4b4b4)Tb4b4b4;

Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.alerts.dfu_ready"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3flashError Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.errors.failed_dfu"Tb4b4b4, Tb4b4b4{ Te6edf3errorTff7b72: Te6edf3eTb4b4b4.Te6edf3message Tff7b72|| Te6edf3e Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3flashErrorTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isEnteringDfuMode Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3flashTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72switch Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3selectedProductTff7b72?Tb4b4b4.Te6edf3platformTb4b4b4) Tb4b4b4{
Tff7b72case Te6edf3ROMTb4b4b4.Te6edf3PLATFORM_ESP32Tff7b72:
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3flashEsp32Tb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72breakTb4b4b4;
Tff7b72case Te6edf3ROMTb4b4b4.Te6edf3PLATFORM_NRF52Tff7b72:
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3flashNrf52Tb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72breakTb4b4b4;
Tff7b72defaultTff7b72:
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.errors.select_product_first"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72breakTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3flashNrf52Tb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3flashError Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72const Te6edf3file Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4[Ta5d6ff"file"Tb4b4b4]Tb4b4b4.Te6edf3filesTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3fileTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3flashError Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.errors.select_firmware_first"Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3flashErrorTb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}

Tff7b72let Te6edf3serialPort Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72try Tb4b4b4{
Te6edf3serialPort Tff7b72= Tff7b72await Tff7b72thisTb4b4b4.Te6edf3askForSerialPortTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3serialPortTb4b4b4) Tff7b72returnTb4b4b4;

Tff7b72thisTb4b4b4.Te6edf3isFlashing Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3flashingProgress Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3flashingStatus Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.connecting_device"Tb4b4b4)Tb4b4b4;

Tff7b72const Te6edf3flasher Tff7b72= Tff7b72new Te6edf3Nrf52DfuFlasherTb4b4b4(Te6edf3serialPortTb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3flasherTb4b4b4.Te6edf3flashTb4b4b4(Te6edf3fileTb4b4b4, Tb4b4b4(Te6edf3percentageTb4b4b4, Te6edf3messageTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3flashingProgress Tff7b72= Te6edf3percentageTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3flashingStatus Tff7b72= Te6edf3message Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.flashing"Tb4b4b4, Tb4b4b4{ Te6edf3percentage Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.alerts.flash_success"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3flashError Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.errors.failed_flash"Tb4b4b4, Tb4b4b4{ Te6edf3errorTff7b72: Te6edf3eTb4b4b4.Te6edf3message Tff7b72|| Te6edf3e Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3flashErrorTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isFlashing Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3flashingStatus Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3serialPortTb4b4b4) Tff7b72await Te6edf3serialPortTb4b4b4.Te6edf3closeTb4b4b4(Tb4b4b4)Tb4b4b4.Tff7b72catchTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3flashEsp32Tb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3flashError Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Tffa657windowTb4b4b4.Te6edf3ESPLoaderTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3flashError Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.errors.esptool_not_loaded"Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3flashErrorTb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}

Tff7b72const Te6edf3flashConfig Tff7b72= Tff7b72thisTb4b4b4.Te6edf3selectedModelTff7b72?Tb4b4b4.Te6edf3flash_config Tff7b72?? Tff7b72thisTb4b4b4.Te6edf3selectedProductTff7b72?Tb4b4b4.Te6edf3flash_configTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3flashConfigTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3flashError Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.errors.no_flash_config"Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3flashErrorTb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}

Tff7b72const Te6edf3file Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4[Ta5d6ff"file"Tb4b4b4]Tb4b4b4.Te6edf3filesTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3fileTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3flashError Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.errors.select_firmware_first"Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3flashErrorTb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}

Tff7b72let Te6edf3serialPort Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72try Tb4b4b4{
Te6edf3serialPort Tff7b72= Tff7b72await Tff7b72thisTb4b4b4.Te6edf3askForSerialPortTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3serialPortTb4b4b4) Tff7b72returnTb4b4b4;

Tff7b72thisTb4b4b4.Te6edf3isFlashing Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3flashingProgress Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3flashingStatus Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.connecting_device"Tb4b4b4)Tb4b4b4;

Tff7b72const Te6edf3blobReader Tff7b72= Tff7b72new Tffa657windowTb4b4b4.Te6edf3zipTb4b4b4.Te6edf3BlobReaderTb4b4b4(Te6edf3fileTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3zipReader Tff7b72= Tff7b72new Tffa657windowTb4b4b4.Te6edf3zipTb4b4b4.Te6edf3ZipReaderTb4b4b4(Te6edf3blobReaderTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3zipEntries Tff7b72= Tff7b72await Te6edf3zipReaderTb4b4b4.Te6edf3getEntriesTb4b4b4(Tb4b4b4)Tb4b4b4;

Tff7b72const Te6edf3filesToFlash Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Tb4b4b4[Te6edf3addressTb4b4b4, Te6edf3filenameTb4b4b4] Tff7b72of Tffa657ObjectTb4b4b4.Te6edf3entriesTb4b4b4(Te6edf3flashConfigTb4b4b4.Te6edf3flash_filesTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3entry Tff7b72= Te6edf3zipEntriesTb4b4b4.Te6edf3findTb4b4b4(Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4=> Te6edf3eTb4b4b4.Te6edf3filename Tff7b72=== Te6edf3filenameTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3entryTb4b4b4)
Tff7b72throw Tff7b72new Tf85149ErrorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.errors.failed_extract"Tb4b4b4, Tb4b4b4{ Te6edf3fileTff7b72: Te6edf3filename Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3blob Tff7b72= Tff7b72await Te6edf3entryTb4b4b4.Te6edf3getDataTb4b4b4(Tff7b72new Tffa657windowTb4b4b4.Te6edf3zipTb4b4b4.Te6edf3BlobWriterTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3filesToFlashTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3addressTff7b72: Tffa657parseIntTb4b4b4(Te6edf3addressTb4b4b4)Tb4b4b4,
Te6edf3dataTff7b72: Tff7b72await Tff7b72thisTb4b4b4.Te6edf3readAsBinaryStringTb4b4b4(Te6edf3blobTb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}

Tff7b72const Te6edf3transport Tff7b72= Tff7b72new Tffa657windowTb4b4b4.Te6edf3TransportTb4b4b4(Te6edf3serialPortTb4b4b4, Tff7b72trueTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3esploader Tff7b72= Tff7b72new Tffa657windowTb4b4b4.Te6edf3ESPLoaderTb4b4b4(Tb4b4b4{
Te6edf3transportTb4b4b4,
Te6edf3baudrateTff7b72: T79c0ff921600Tb4b4b4,
Te6edf3terminalTff7b72: Tb4b4b4{
Te6edf3writeLineTff7b72: Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4,
Te6edf3writeTff7b72: Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4,
Te6edf3cleanTff7b72: Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Tff7b72await Te6edf3esploaderTb4b4b4.Te6edf3mainTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3esploaderTb4b4b4.Te6edf3writeFlashTb4b4b4(Tb4b4b4{
Te6edf3fileArrayTff7b72: Te6edf3filesToFlashTb4b4b4,
Te6edf3flashSizeTff7b72: Te6edf3flashConfigTb4b4b4.Te6edf3flash_sizeTb4b4b4,
Te6edf3flashModeTff7b72: Ta5d6ff"DIO"Tb4b4b4,
Te6edf3flashFreqTff7b72: Ta5d6ff"80MHz"Tb4b4b4,
Te6edf3calculateMD5HashTff7b72: Tb4b4b4(Te6edf3imgTb4b4b4) Tb4b4b4=> Tffa657windowTb4b4b4.Te6edf3CryptoJSTb4b4b4.Te6edf3MD5Tb4b4b4(Tffa657windowTb4b4b4.Te6edf3CryptoJSTb4b4b4.Te6edf3encTb4b4b4.Te6edf3Latin1Tb4b4b4.Te6edf3parseTb4b4b4(Te6edf3imgTb4b4b4)Tb4b4b4)Tb4b4b4,
Te6edf3reportProgressTff7b72: Tb4b4b4(Te6edf3idxTb4b4b4, Te6edf3writtenTb4b4b4, Te6edf3totalTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3flashingProgress Tff7b72= Tffa657MathTb4b4b4.Te6edf3floorTb4b4b4(Tb4b4b4(Te6edf3written Tff7b72/ Te6edf3totalTb4b4b4) Tff7b72* T79c0ff100Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3flashingStatus Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.flashing_file_progress"Tb4b4b4, Tb4b4b4{
Te6edf3currentTff7b72: Te6edf3idx Tff7b72+ T79c0ff1Tb4b4b4,
Te6edf3totalTff7b72: Te6edf3filesToFlashTb4b4b4.Te6edf3lengthTb4b4b4,
Te6edf3percentageTff7b72: Tff7b72thisTb4b4b4.Te6edf3flashingProgressTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;

T8b949e// Reboot
Tff7b72await Te6edf3transportTb4b4b4.Te6edf3setDTRTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3rTb4b4b4) Tb4b4b4=> Te6edf3setTimeoutTb4b4b4(Te6edf3rTb4b4b4, T79c0ff100Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3transportTb4b4b4.Te6edf3setDTRTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;

Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.alerts.flash_success"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3flashError Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.errors.failed_flash"Tb4b4b4, Tb4b4b4{ Te6edf3errorTff7b72: Te6edf3eTb4b4b4.Te6edf3message Tff7b72|| Te6edf3e Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3flashErrorTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isFlashing Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3flashingStatus Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3serialPortTb4b4b4) Tff7b72await Te6edf3serialPortTb4b4b4.Te6edf3closeTb4b4b4(Tb4b4b4)Tb4b4b4.Tff7b72catchTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3detectTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3rnode Tff7b72= Tff7b72await Tff7b72thisTb4b4b4.Te6edf3askForRNodeTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3rnodeTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72const Te6edf3ver Tff7b72= Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3getFirmwareVersionTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.alerts.rnode_detected"Tb4b4b4, Tb4b4b4{ Te6edf3versionTff7b72: Te6edf3ver Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3closeTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.errors.failed_detect"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3rebootTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3rnode Tff7b72= Tff7b72await Tff7b72thisTb4b4b4.Te6edf3askForRNodeTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3rnodeTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3resetTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3closeTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.alerts.rebooting"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.errors.failed_reboot"Tb4b4b4, Tb4b4b4{ Te6edf3errorTff7b72: Te6edf3eTb4b4b4.Te6edf3message Tff7b72|| Te6edf3e Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3readDisplayTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3rnode Tff7b72= Tff7b72await Tff7b72thisTb4b4b4.Te6edf3askForRNodeTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3rnodeTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72const Te6edf3buffer Tff7b72= Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3readDisplayTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3closeTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3rnodeDisplayImage Tff7b72= Tff7b72thisTb4b4b4.Te6edf3rnodeDisplayBufferToPngTb4b4b4(Te6edf3bufferTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.errors.failed_read_display"Tb4b4b4, Tb4b4b4{ Te6edf3errorTff7b72: Te6edf3eTb4b4b4.Te6edf3message Tff7b72|| Te6edf3e Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3rnodeDisplayBufferToPngTb4b4b4(Te6edf3displayBufferTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3displayArea Tff7b72= Te6edf3displayBufferTb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff0Tb4b4b4, T79c0ff512Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3statArea Tff7b72= Te6edf3displayBufferTb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff512Tb4b4b4, T79c0ff1024Tb4b4b4)Tb4b4b4;

Tff7b72const Te6edf3displayCanvas Tff7b72= Tff7b72thisTb4b4b4.Te6edf3frameBufferToCanvasTb4b4b4(Te6edf3displayAreaTb4b4b4, T79c0ff64Tb4b4b4, T79c0ff64Tb4b4b4, Ta5d6ff"#000000"Tb4b4b4, Ta5d6ff"#FFFFFF"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3statCanvas Tff7b72= Tff7b72thisTb4b4b4.Te6edf3frameBufferToCanvasTb4b4b4(Te6edf3statAreaTb4b4b4, T79c0ff64Tb4b4b4, T79c0ff64Tb4b4b4, Ta5d6ff"#000000"Tb4b4b4, Ta5d6ff"#FFFFFF"Tb4b4b4)Tb4b4b4;

Tff7b72const Te6edf3canvas Tff7b72= Tffa657documentTb4b4b4.Te6edf3createElementTb4b4b4(Ta5d6ff"canvas"Tb4b4b4)Tb4b4b4;
Te6edf3canvasTb4b4b4.Te6edf3width Tff7b72= T79c0ff128Tb4b4b4;
Te6edf3canvasTb4b4b4.Te6edf3height Tff7b72= T79c0ff64Tb4b4b4;
Tff7b72const Te6edf3ctx Tff7b72= Te6edf3canvasTb4b4b4.Te6edf3getContextTb4b4b4(Ta5d6ff"2d"Tb4b4b4)Tb4b4b4;
Te6edf3ctxTb4b4b4.Te6edf3drawImageTb4b4b4(Te6edf3displayCanvasTb4b4b4, T79c0ff0Tb4b4b4, T79c0ff0Tb4b4b4)Tb4b4b4;
Te6edf3ctxTb4b4b4.Te6edf3drawImageTb4b4b4(Te6edf3statCanvasTb4b4b4, T79c0ff64Tb4b4b4, T79c0ff0Tb4b4b4)Tb4b4b4;

Tff7b72const Te6edf3scaledCanvas Tff7b72= Tffa657documentTb4b4b4.Te6edf3createElementTb4b4b4(Ta5d6ff"canvas"Tb4b4b4)Tb4b4b4;
Te6edf3scaledCanvasTb4b4b4.Te6edf3width Tff7b72= T79c0ff512Tb4b4b4;
Te6edf3scaledCanvasTb4b4b4.Te6edf3height Tff7b72= T79c0ff256Tb4b4b4;
Tff7b72const Te6edf3sCtx Tff7b72= Te6edf3scaledCanvasTb4b4b4.Te6edf3getContextTb4b4b4(Ta5d6ff"2d"Tb4b4b4)Tb4b4b4;
Te6edf3sCtxTb4b4b4.Te6edf3imageSmoothingEnabled Tff7b72= Tff7b72falseTb4b4b4;
Te6edf3sCtxTb4b4b4.Te6edf3drawImageTb4b4b4(Te6edf3canvasTb4b4b4, T79c0ff0Tb4b4b4, T79c0ff0Tb4b4b4, T79c0ff512Tb4b4b4, T79c0ff256Tb4b4b4)Tb4b4b4;

Tff7b72return Te6edf3scaledCanvasTb4b4b4.Te6edf3toDataURLTb4b4b4(Ta5d6ff"image/png"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3frameBufferToCanvasTb4b4b4(Te6edf3fbTb4b4b4, Te6edf3wTb4b4b4, Te6edf3hTb4b4b4, Te6edf3bgTb4b4b4, Te6edf3fgTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3c Tff7b72= Tffa657documentTb4b4b4.Te6edf3createElementTb4b4b4(Ta5d6ff"canvas"Tb4b4b4)Tb4b4b4;
Te6edf3cTb4b4b4.Te6edf3width Tff7b72= Te6edf3wTb4b4b4;
Te6edf3cTb4b4b4.Te6edf3height Tff7b72= Te6edf3hTb4b4b4;
Tff7b72const Te6edf3ctx Tff7b72= Te6edf3cTb4b4b4.Te6edf3getContextTb4b4b4(Ta5d6ff"2d"Tb4b4b4)Tb4b4b4;
Te6edf3ctxTb4b4b4.Te6edf3fillStyle Tff7b72= Te6edf3bgTb4b4b4;
Te6edf3ctxTb4b4b4.Te6edf3fillRectTb4b4b4(T79c0ff0Tb4b4b4, T79c0ff0Tb4b4b4, Te6edf3wTb4b4b4, Te6edf3hTb4b4b4)Tb4b4b4;
Te6edf3ctxTb4b4b4.Te6edf3fillStyle Tff7b72= Te6edf3fgTb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72let Te6edf3y Tff7b72= T79c0ff0Tb4b4b4; Te6edf3y Tff7b72< Te6edf3hTb4b4b4; Te6edf3yTff7b72++Tb4b4b4) Tb4b4b4{
Tff7b72for Tb4b4b4(Tff7b72let Te6edf3x Tff7b72= T79c0ff0Tb4b4b4; Te6edf3x Tff7b72< Te6edf3wTb4b4b4; Te6edf3xTff7b72++Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3idx Tff7b72= Tffa657MathTb4b4b4.Te6edf3floorTb4b4b4(Tb4b4b4(Te6edf3y Tff7b72* Te6edf3w Tff7b72+ Te6edf3xTb4b4b4) Tff7b72/ T79c0ff8Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3bit Tff7b72= Tb4b4b4(Te6edf3fbTb4b4b4[Te6edf3idxTb4b4b4] Tff7b72>> Tb4b4b4(T79c0ff7 Tff7b72- Tb4b4b4(Te6edf3x Tff7b72% T79c0ff8Tb4b4b4)Tb4b4b4)Tb4b4b4) Tff7b72& T79c0ff1Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3bitTb4b4b4) Te6edf3ctxTb4b4b4.Te6edf3fillRectTb4b4b4(Te6edf3xTb4b4b4, Te6edf3yTb4b4b4, T79c0ff1Tb4b4b4, T79c0ff1Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72return Te6edf3cTb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3dumpEepromTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3rnode Tff7b72= Tff7b72await Tff7b72thisTb4b4b4.Te6edf3askForRNodeTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3rnodeTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72const Te6edf3eeprom Tff7b72= Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3getRomTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3RNodeUtilsTb4b4b4.Te6edf3bytesToHexTb4b4b4(Te6edf3eepromTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3closeTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.alerts.eeprom_dumped"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.errors.failed_dump_eeprom"Tb4b4b4, Tb4b4b4{ Te6edf3errorTff7b72: Te6edf3eTb4b4b4.Te6edf3message Tff7b72|| Te6edf3e Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3wipeEepromTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3rnode Tff7b72= Tff7b72await Tff7b72thisTb4b4b4.Te6edf3askForRNodeTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3rnodeTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3confirmTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.alerts.eeprom_wipe_confirm"Tb4b4b4)Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3closeTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3wipeRomTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3resetTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3closeTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.alerts.eeprom_wiped"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.errors.failed_wipe_eeprom"Tb4b4b4, Tb4b4b4{ Te6edf3errorTff7b72: Te6edf3eTb4b4b4.Te6edf3message Tff7b72|| Te6edf3e Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3provisionTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3rnode Tff7b72= Tff7b72await Tff7b72thisTb4b4b4.Te6edf3askForRNodeTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3rnodeTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72const Te6edf3rom Tff7b72= Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3getRomAsObjectTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3romTb4b4b4.Te6edf3parseTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.errors.provisioned_already"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3closeTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3selectedProduct Tff7b72|| Tff7b72!Tff7b72thisTb4b4b4.Te6edf3selectedModelTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.errors.select_product_first"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3closeTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}

Tff7b72thisTb4b4b4.Te6edf3isProvisioning Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72const Te6edf3product Tff7b72= Tff7b72thisTb4b4b4.Te6edf3selectedProductTb4b4b4.Te6edf3idTb4b4b4;
Tff7b72const Te6edf3model Tff7b72= Tff7b72thisTb4b4b4.Te6edf3selectedModelTb4b4b4.Te6edf3mapped_id Tff7b72?? Tff7b72thisTb4b4b4.Te6edf3selectedModelTb4b4b4.Te6edf3idTb4b4b4;
Tff7b72const Te6edf3hwRev Tff7b72= T79c0ff0x1Tb4b4b4;
Tff7b72const Te6edf3serial Tff7b72= T79c0ff1Tb4b4b4;
Tff7b72const Te6edf3now Tff7b72= Tffa657MathTb4b4b4.Te6edf3floorTb4b4b4(Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4) Tff7b72/ T79c0ff1000Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3sBytes Tff7b72= Te6edf3RNodeUtilsTb4b4b4.Te6edf3packUInt32BETb4b4b4(Te6edf3serialTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3tBytes Tff7b72= Te6edf3RNodeUtilsTb4b4b4.Te6edf3packUInt32BETb4b4b4(Te6edf3nowTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3checksum Tff7b72= Te6edf3RNodeUtilsTb4b4b4.Te6edf3md5Tb4b4b4(Tb4b4b4[Te6edf3productTb4b4b4, Te6edf3modelTb4b4b4, Te6edf3hwRevTb4b4b4, Tb4b4b4...Te6edf3sBytesTb4b4b4, Tb4b4b4...Te6edf3tBytesTb4b4b4]Tb4b4b4)Tb4b4b4;

Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3writeRomTb4b4b4(Te6edf3ROMTb4b4b4.Te6edf3ADDR_PRODUCTTb4b4b4, Te6edf3productTb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3writeRomTb4b4b4(Te6edf3ROMTb4b4b4.Te6edf3ADDR_MODELTb4b4b4, Te6edf3modelTb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3writeRomTb4b4b4(Te6edf3ROMTb4b4b4.Te6edf3ADDR_HW_REVTb4b4b4, Te6edf3hwRevTb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3writeRomTb4b4b4(Te6edf3ROMTb4b4b4.Te6edf3ADDR_SERIALTb4b4b4, Te6edf3sBytesTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3writeRomTb4b4b4(Te6edf3ROMTb4b4b4.Te6edf3ADDR_SERIAL Tff7b72+ T79c0ff1Tb4b4b4, Te6edf3sBytesTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3writeRomTb4b4b4(Te6edf3ROMTb4b4b4.Te6edf3ADDR_SERIAL Tff7b72+ T79c0ff2Tb4b4b4, Te6edf3sBytesTb4b4b4[T79c0ff2Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3writeRomTb4b4b4(Te6edf3ROMTb4b4b4.Te6edf3ADDR_SERIAL Tff7b72+ T79c0ff3Tb4b4b4, Te6edf3sBytesTb4b4b4[T79c0ff3Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3writeRomTb4b4b4(Te6edf3ROMTb4b4b4.Te6edf3ADDR_MADETb4b4b4, Te6edf3tBytesTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3writeRomTb4b4b4(Te6edf3ROMTb4b4b4.Te6edf3ADDR_MADE Tff7b72+ T79c0ff1Tb4b4b4, Te6edf3tBytesTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3writeRomTb4b4b4(Te6edf3ROMTb4b4b4.Te6edf3ADDR_MADE Tff7b72+ T79c0ff2Tb4b4b4, Te6edf3tBytesTb4b4b4[T79c0ff2Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3writeRomTb4b4b4(Te6edf3ROMTb4b4b4.Te6edf3ADDR_MADE Tff7b72+ T79c0ff3Tb4b4b4, Te6edf3tBytesTb4b4b4[T79c0ff3Tb4b4b4]Tb4b4b4)Tb4b4b4;

Tff7b72for Tb4b4b4(Tff7b72let Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< T79c0ff16Tb4b4b4; Te6edf3iTff7b72++Tb4b4b4) Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3writeRomTb4b4b4(Te6edf3ROMTb4b4b4.Te6edf3ADDR_CHKSUM Tff7b72+ Te6edf3iTb4b4b4, Te6edf3checksumTb4b4b4[Te6edf3iTb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72let Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< T79c0ff128Tb4b4b4; Te6edf3iTff7b72++Tb4b4b4) Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3writeRomTb4b4b4(Te6edf3ROMTb4b4b4.Te6edf3ADDR_SIGNATURE Tff7b72+ Te6edf3iTb4b4b4, T79c0ff0x00Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3writeRomTb4b4b4(Te6edf3ROMTb4b4b4.Te6edf3ADDR_INFO_LOCKTb4b4b4, Te6edf3ROMTb4b4b4.Te6edf3INFO_LOCK_BYTETb4b4b4)Tb4b4b4;

Tff7b72await Te6edf3RNodeUtilsTb4b4b4.Te6edf3sleepMillisTb4b4b4(T79c0ff5000Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3resetTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3closeTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.alerts.provision_success"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.errors.failed_provision"Tb4b4b4, Tb4b4b4{ Te6edf3errorTff7b72: Te6edf3eTb4b4b4.Te6edf3message Tff7b72|| Te6edf3e Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isProvisioning Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3setFirmwareHashTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3rnode Tff7b72= Tff7b72await Tff7b72thisTb4b4b4.Te6edf3askForRNodeTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3rnodeTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72const Te6edf3rom Tff7b72= Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3getRomAsObjectTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3romTb4b4b4.Te6edf3parseTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.errors.not_provisioned"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3closeTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3isSettingFirmwareHash Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72const Te6edf3hash Tff7b72= Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3getFirmwareHashTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3setFirmwareHashTb4b4b4(Te6edf3hashTb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3RNodeUtilsTb4b4b4.Te6edf3sleepMillisTb4b4b4(T79c0ff5000Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3resetTb4b4b4(Tb4b4b4)Tb4b4b4.Tff7b72catchTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
T8b949e// ignore
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3closeTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.alerts.hash_success"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.errors.failed_set_hash"Tb4b4b4, Tb4b4b4{ Te6edf3errorTff7b72: Te6edf3eTb4b4b4.Te6edf3message Tff7b72|| Te6edf3e Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isSettingFirmwareHash Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3enableTncModeTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3rnode Tff7b72= Tff7b72await Tff7b72thisTb4b4b4.Te6edf3askForRNodeTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3rnodeTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3setFrequencyTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3configFrequencyTb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3setBandwidthTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3configBandwidthTb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3setTxPowerTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3configTxPowerTb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3setSpreadingFactorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3configSpreadingFactorTb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3setCodingRateTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3configCodingRateTb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3setRadioStateOnTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3RNodeUtilsTb4b4b4.Te6edf3sleepMillisTb4b4b4(T79c0ff500Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3saveConfigTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3saveConfigTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3RNodeUtilsTb4b4b4.Te6edf3sleepMillisTb4b4b4(T79c0ff5000Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3resetTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3closeTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.alerts.tnc_enabled"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.errors.failed_enable_tnc"Tb4b4b4, Tb4b4b4{ Te6edf3errorTff7b72: Te6edf3eTb4b4b4.Te6edf3message Tff7b72|| Te6edf3e Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3disableTncModeTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3rnode Tff7b72= Tff7b72await Tff7b72thisTb4b4b4.Te6edf3askForRNodeTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3rnodeTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3deleteConfigTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3RNodeUtilsTb4b4b4.Te6edf3sleepMillisTb4b4b4(T79c0ff5000Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3resetTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3closeTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.alerts.tnc_disabled"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.errors.failed_disable_tnc"Tb4b4b4, Tb4b4b4{ Te6edf3errorTff7b72: Te6edf3eTb4b4b4.Te6edf3message Tff7b72|| Te6edf3e Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3enableBluetoothTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3rnode Tff7b72= Tff7b72await Tff7b72thisTb4b4b4.Te6edf3askForRNodeTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3rnodeTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3enableBluetoothTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3RNodeUtilsTb4b4b4.Te6edf3sleepMillisTb4b4b4(T79c0ff1000Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3closeTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.alerts.bluetooth_enabled"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(
Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.errors.failed_enable_bluetooth"Tb4b4b4, Tb4b4b4{ Te6edf3errorTff7b72: Te6edf3eTb4b4b4.Te6edf3message Tff7b72|| Te6edf3e Tb4b4b4}Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3disableBluetoothTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3rnode Tff7b72= Tff7b72await Tff7b72thisTb4b4b4.Te6edf3askForRNodeTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3rnodeTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3disableBluetoothTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3RNodeUtilsTb4b4b4.Te6edf3sleepMillisTb4b4b4(T79c0ff1000Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3closeTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.alerts.bluetooth_disabled"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(
Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.errors.failed_disable_bluetooth"Tb4b4b4, Tb4b4b4{ Te6edf3errorTff7b72: Te6edf3eTb4b4b4.Te6edf3message Tff7b72|| Te6edf3e Tb4b4b4}Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3startBluetoothPairingTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3rnode Tff7b72= Tff7b72await Tff7b72thisTb4b4b4.Te6edf3askForRNodeTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3rnodeTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3startBluetoothPairingTb4b4b4(Tb4b4b4(Te6edf3pinTb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.alerts.bluetooth_pairing_pin"Tb4b4b4, Tb4b4b4{ Te6edf3pin Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.alerts.bluetooth_pairing_started"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.errors.failed_start_pairing"Tb4b4b4, Tb4b4b4{ Te6edf3errorTff7b72: Te6edf3eTb4b4b4.Te6edf3message Tff7b72|| Te6edf3e Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3setDisplayRotationTb4b4b4(Te6edf3rotTb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3rnode Tff7b72= Tff7b72await Tff7b72thisTb4b4b4.Te6edf3askForRNodeTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3rnodeTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3setDisplayRotationTb4b4b4(Te6edf3rotTb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3closeTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.alerts.rotation_updated"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.errors.failed_set_rotation"Tb4b4b4, Tb4b4b4{ Te6edf3errorTff7b72: Te6edf3eTb4b4b4.Te6edf3message Tff7b72|| Te6edf3e Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3startDisplayReconditioningTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3rnode Tff7b72= Tff7b72await Tff7b72thisTb4b4b4.Te6edf3askForRNodeTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3rnodeTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3startDisplayReconditioningTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3rnodeTb4b4b4.Te6edf3closeTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.alerts.reconditioning_started"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(
Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"tools.rnode_flasher.errors.failed_start_reconditioning"Tb4b4b4, Tb4b4b4{ Te6edf3errorTff7b72: Te6edf3eTb4b4b4.Te6edf3message Tff7b72|| Te6edf3e Tb4b4b4}Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3readAsBinaryStringTb4b4b4(Te6edf3blobTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3resolveTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3r Tff7b72= Tff7b72new Te6edf3FileReaderTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3rTb4b4b4.Te6edf3onload Tff7b72= Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3resolveTb4b4b4(Te6edf3rTb4b4b4.Te6edf3resultTb4b4b4)Tb4b4b4;
Te6edf3rTb4b4b4.Te6edf3readAsBinaryStringTb4b4b4(Te6edf3blobTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4<Tb4b4b4/Tff7b72scriptTb4b4b4>

Tb4b4b4<Tff7b72style Te6edf3scopedTb4b4b4>
Tb4b4b4.T56d364action-btn Tb4b4b4{
@apply inline-flex items-center justify-center gap-2 rounded-xl bg-gray-100 Te6edf3darkTb4b4b4:Te6edf3bg-zinc-800 Te6edf3hoverTff7b72:Te6edf3bg-gray-200 Te6edf3darkTff7b72:Te6edf3hoverTff7b72:Te6edf3bg-zinc-700 Te6edf3px-3 Te6edf3py-2 Tff7b72textTff7b72-Tb4b4b4[T79c0ff11Tffa657pxTb4b4b4] Tff7b72fontTff7b72-Tff7b72bold Tff7b72textTff7b72-Tff7b72grayT79c0ff-700 Te6edf3darkTff7b72:Tff7b72textTff7b72-Te6edf3zinc-300 Tff7b72border Tff7b72borderTff7b72-Tff7b72grayT79c0ff-200 Te6edf3darkTff7b72:Tff7b72borderTff7b72-Te6edf3zinc-700 Tff7b72transitionTff7b72-Tff7b72all Te6edf3activeTff7b72:Tff7b72scaleT79c0ff-95Tb4b4b4;
Tb4b4b4}

Tb4b4b4.T56d364action-btnTb4b4b4.T56d364danger Tb4b4b4{
@apply bg-red-50 Te6edf3darkTb4b4b4:Te6edf3bg-red-900Tff7b72/T79c0ff20 Tff7b72textTff7b72-Tff7b72redT79c0ff-600 Te6edf3darkTff7b72:Tff7b72textTff7b72-Tff7b72redT79c0ff-400 Tff7b72borderTff7b72-Tff7b72redT79c0ff-100 Te6edf3darkTff7b72:Tff7b72borderTff7b72-Tff7b72redT79c0ff-900Tff7b72/T79c0ff30 Te6edf3hoverTff7b72:Te6edf3bg-red-100 Te6edf3darkTff7b72:Te6edf3hoverTff7b72:Te6edf3bg-red-900Tff7b72/T79c0ff40Tb4b4b4;
Tb4b4b4}

Tb4b4b4.T56d364config-input Tb4b4b4{
@apply w-full bg-gray-50 Te6edf3darkTb4b4b4:Te6edf3bg-zinc-800 Tff7b72border Tff7b72borderTff7b72-Tff7b72grayT79c0ff-200 Te6edf3darkTff7b72:Tff7b72borderTff7b72-Te6edf3zinc-800 Tff7b72textTff7b72-Tff7b72grayT79c0ff-900 Te6edf3darkTff7b72:Tff7b72textTff7b72-Te6edf3zinc-100 Tff7b72textTff7b72-Tb4b4b4[T79c0ff11Tffa657pxTb4b4b4] Te6edf3rounded-lg Te6edf3focusTff7b72:Te6edf3ring-1 Te6edf3focusTff7b72:Te6edf3ring-blue-500Tff7b72/T79c0ff50 Te6edf3focusTff7b72:Tff7b72borderTff7b72-Tff7b72blueT79c0ff-500 Te6edf3px-3 Te6edf3py-2 Tff7b72transitionTff7b72-Tff7b72allTb4b4b4;
Tb4b4b4}

Tb4b4b4.T56d364pixelated Tb4b4b4{
Tff7b72image-renderingTb4b4b4: Tff7b72pixelatedTb4b4b4;
Tb4b4b4}

Tff7b72select Tb4b4b4{
Tff7b72appearanceTb4b4b4: Tff7b72noneTb4b4b4;
Tff7b72background-imageTb4b4b4: Tffa657urlTb4b4b4(Ta5d6ff"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e"Tb4b4b4)Tb4b4b4;
Tff7b72background-positionTb4b4b4: Tff7b72right T79c0ff0.5Tffa657rem Tff7b72centerTb4b4b4;
Tff7b72background-repeatTb4b4b4: Tff7b72no-repeatTb4b4b4;
Tff7b72background-sizeTb4b4b4: T79c0ff1.5Tffa657em T79c0ff1.5Tffa657emTb4b4b4;
Tb4b4b4}

Tff7b72inputTff7b72[Tff7b72typeTff7b72=Ta5d6ff"number"Tff7b72]Tb4b4b4::Tf0883e-webkit-inner-spin-buttonTff7b72,
Tff7b72inputTff7b72[Tff7b72typeTff7b72=Ta5d6ff"number"Tff7b72]Tb4b4b4::Tf0883e-webkit-outer-spin-button Tb4b4b4{
Tff7b72-webkit-Tff7b72appearanceTb4b4b4: Tff7b72noneTb4b4b4;
Tff7b72marginTb4b4b4: T79c0ff0Tb4b4b4;
Tb4b4b4}
Tb4b4b4<Tb4b4b4/Tff7b72styleTb4b4b4>


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────